package org.huatek.anders.constants;

import lombok.Data;

/**
 * @author anders
 * @date 2018-12-03 13:33
 **/
public class Oauth2Constans {
    /**
     * QQ登陆授权
     * @see "http://wiki.open.qq.com/wiki/website/get_user_info"
     */
    @Data
    public static class Qq {
        private String appid = "101482255";
        private String appkey = "b69bcbf02686b30af6c7a00768dc4327";
        private String redirectUri = "http://localhost/oauth2/qq/login";
        private String grantType = "authorization_code";

        private String base = "https://graph.qq.com";
        private String authorize = base + "/oauth2.0/authorize?response_type=code&client_id=%s&redirect_uri=%s&state=1";
        private String token = base + "/oauth2.0/token?grant_type=%s&client_id=%s&redirect_uri=%s&client_secret=%s&code=";

        public String authorizeFormat = String.format(authorize, appid, redirectUri);
        /**
         * 获取3个月有效期
         */
        public String tokenFormat = String.format(token, grantType, appid, redirectUri, appkey);
        public String openidUrl = base + "/oauth2.0/me?";
        public String userInfoUrl = base + "/user/get_user_info?oauth_consumer_key=" + appid + "&openid=%s&";
    }

    /**
     * 微信网页登陆授权
     * @see "https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419316505&token=&lang=zh_CN"
     */
    @Data
    public static class Wechat {
        private String appid = "wxb0af13f5f343e8ca";
        private String appkey = "53a45bb65b1a41b92d424e60dd955dc2";
        private String redirectUri = "http://localhost/oauth2/wechat/login";
        private String grantType = "authorization_code";

        /**
         * 获取code
         */
        private String authorize = "https://open.weixin.qq.com/connect/qrconnect?appid=%s&redirect_uri=%s&response_type=code&scope=snsapi_login&state=1#wechat_redirect";
        /**
         * 获取token 有效期2小时
         * access_token	接口调用凭证
         * expires_in	access_token接口调用凭证超时时间，单位（秒）
         * refresh_token	用户刷新access_token
         * openid	授权用户唯一标识
         * scope	用户授权的作用域，使用逗号（,）分隔
         */
        private String token =  "https://api.weixin.qq.com/sns/oauth2/access_token?appid=%s&secret=%s&grant_type=%s&code=";
        /**
         * 刷新token 有效期30天
         */
        private String refresh = "https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=%s&grant_type=refresh_token&refresh_token=";


        public String authorizeFormat = String.format(authorize, appid, redirectUri);
        public String tokenFormat = String.format(token, appid, appkey, grantType);
        public String refreshTokenFormat = String.format(refresh, appid);
        /**
         * 获取用户信息 UnionID机制
         * openid	普通用户的标识，对当前开发者帐号唯一
         * nickname	普通用户昵称
         * sex	普通用户性别，1为男性，2为女性
         * province	普通用户个人资料填写的省份
         * city	普通用户个人资料填写的城市
         * country	国家，如中国为CN
         * headimgurl	用户头像，最后一个数值代表正方形头像大小（有0、46、64、96、132数值可选，0代表640*640正方形头像），用户没有头像时该项为空
         * privilege	用户特权信息，json数组，如微信沃卡用户为（chinaunicom）
         * unionid	用户统一标识。针对一个微信开放平台帐号下的应用，同一用户的unionid是唯一的。
         */
        public String userInfoUrl = "https://api.weixin.qq.com/sns/userinfo?openid=%s&access_token=%s&lang=zh_CN";
    }
}
